package com.qkjia.partitioner;

import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;

import java.util.Map;

/**
 * @Auther 赵乾坤
 * @Date 2021-10-01 17:44
 * 我的分区器
 *
 * Partition：为了实现扩展性，一个非常大的topic可以分布到多个broker（即服务器）上，
 * 一个topic可以分为多个partition，每个partition是一个有序的队列；
 */
public class MyPartitioner implements Partitioner {
    @Override
    public int partition(String topic, Object key, byte[] keyBytes,
                         Object value, byte[] valueBytes, Cluster cluster) {

        // 一个cluster下有多少个分区
        Integer integer = cluster.partitionCountForTopic(topic);

        return key.toString().hashCode() % integer;
//        return 1;

    }

    @Override
    public void close() {

    }

    @Override
    public void configure(Map<String, ?> map) {

    }
}
